/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.dao;

import edu.ucue.ptc.gco.mdl.Direccion;
import edu.ucue.ptc.gco.mdl.Persona;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author DELL
 */
@Stateless
public class DireccionDAO implements DireccionDAOLocal {

    @PersistenceContext(unitName="edu.ucue.gped_gestionpedidosee-ejb_ejb_1.0-SNAPSHOTPU")
    private EntityManager entityManager;
    
    @Override
    public void crear(Direccion direccion){
        entityManager.persist(direccion);
    }

    @Override
    public void actualizar(Direccion direccion) {
        entityManager.merge(direccion);
    }

    @Override
    public void eliminar(Direccion direccion) {
        entityManager.remove(direccion);
    }

    @Override
    public void eliminarc(String idDireccion) {
        Direccion direccion = obtenerPorId(idDireccion);
        eliminar(direccion);
    }
        
    @Override
       public List<Direccion> verificarDireccion(int id){
        Query query = entityManager.createQuery("select object(o) from Direccion as o  where o.estado=0 and o.idDireccion='"+id+"'");
        return query.getResultList();
    }
    
    @Override
     public List<Direccion> ListarDireccionPorCliente(int id){
        Query query = entityManager.createQuery("select object(o) from Direccion as o  where o.estado=0 and o.persona.idPersona='"+id+"'");
        return query.getResultList();
    }

    @Override
    public void eliminarc(Long idDireccion) {
        Direccion direccion  = entityManager.find(Direccion.class, idDireccion);
        eliminar(direccion );
    }

    @Override
    public List<Direccion> listarTodos() {
        Query query = entityManager.createQuery("select d from Direccion d where d.estado=0");       
        return query.getResultList();        
    }

    @Override
    public Direccion obtenerPorId(String idDireccion) {
        Query query = entityManager.createQuery("select d from Direccion AS d "
                + "where d.idDireccion = "+idDireccion);
        query.setMaxResults(1);
        List<Direccion> direccion = query.getResultList();
        
        if (direccion == null || direccion.isEmpty()) {
            return null;
        }
        return direccion.get(0);
    }

    @Override
    public String eliminarDireccion(Direccion direccion) {
        direccion.setEstado(1);
        entityManager.merge(direccion);
        return "ok";
    }
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

}
